const login = {
  namespaced: true,
  state: {
    token: '54321'
  },
  mutations: {
    // 方法
    getToken(state, token) {
      state.token = token
    }
  },
  actions: {
    // actions处理异步的，但是这个action有什么特点？
    // 1. action必须通过commit提交mutaions，然后修改state.
    // 2. 然后组件通过state/getters 才能知道当前的action执行完毕了；
    // 3. 异步操作的结果，什么时候返回，你并不清楚？

    /**
     * 异步：
     * 1. http请求
     * 2. 定时器
     * 3. 事件 （需要触发才能执行---用户触发）
     *
     * 特点：结果的不可预期
     *
     * 解决异步：（解决的什么？我要确定的获取到这个结果）
     * 1. 回调
     * 2. promise  .then() 确定的拿到一个返回结果 resolve .catch() ---reject()
     * 3. *
     * 4. async awiat
     */

    // actions方法的函数名字以大写开头
    Login({ commit }) {
      // 采用第二种方法，组件不处理异步，让vuex处理异步
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          commit('getToken', '我是token')
          resolve() // 一旦resolve,就会触发.then方法执行
        }, 1000)
      })
    }
  }
}

export { login }
